using System;
using System.Collections.Generic;
using System.Text;
using Medusa.Service.Business.Core.Entities;
using Newtonsoft.Json;

namespace NP.BPMReportPlatform.CourseTrain.Dtos
{
    /// <summary>
    /// 训练课程实体类
    /// </summary>
    public class TrainingCourseDto
    {
        /// <summary>
        /// 培训项目ID
        /// </summary>
        [JsonProperty("trainId")]
        public int TrainId { get; set; }

        /// <summary>
        /// 培训项目名称
        /// </summary>
        [JsonProperty("trainName")]
        public string TrainName { get; set; }

        /// <summary>
        /// 介绍
        /// </summary>
        [JsonProperty("intro")]
        public string Intro { get; set; }

        /// <summary>
        /// 培训项目分类ID
        /// </summary>
        [JsonProperty("categoryId")]
        public int CategoryId { get; set; }

        /// <summary>
        /// 图像链接
        /// </summary>
        [JsonProperty("image")]
        public string Image { get; set; }

        /// <summary>
        /// 培训项目分类名称
        /// </summary>
        [JsonProperty("categoryName")]
        public string CategoryName { get; set; }

        /// <summary>
        /// 关联的培训项目证书ID
        /// </summary>
        [JsonProperty("certificateId")]
        public string CertificateId { get; set; }

        /// <summary>
        /// 关联的培训项目证书名称
        /// </summary>
        [JsonProperty("certificateName")]
        public string CertificateName { get; set; }

        /// <summary>
        /// 学习类型
        /// order = 顺序学习 , disorder = 无序学习
        /// </summary>
        [JsonProperty("studyType")]
        public string StudyType { get; set; }

        /// <summary>
        /// 创建时间
        /// </summary>
        [JsonProperty("createTime")]
        public DateTime? CreateTime { get; set; }

        /// <summary>
        /// 开始时间
        /// </summary>
        [JsonProperty("startTime")]
        public DateTime? StartTime { get; set; }

        /// <summary>
        /// 结束时间
        /// </summary>
        [JsonProperty("endTime")]
        public DateTime? EndTime { get; set; }

        /// <summary>
        /// 培训项目时长（分钟）
        /// </summary>
        [JsonProperty("duration")]
        public int Duration { get; set; }

        /// <summary>
        /// 积分奖励
        /// </summary>
        [JsonProperty("points")]
        public int Points { get; set; }

        /// <summary>
        /// 学分
        /// </summary>
        [JsonProperty("credit")]
        public string Credit { get; set; }

        /// <summary>
        /// 显示模式
        /// list=列表模式 ， map=地图模式
        /// </summary>
        [JsonProperty("displayMode")]
        public string DisplayMode { get; set; }

        /// <summary>
        /// 培训项目内容阶段模式
        /// default=默认/即无阶段 ， multi=多阶段
        /// </summary>
        [JsonProperty("phaseType")]
        public string PhaseType { get; set; }

        /// <summary>
        /// 关联的调查问卷ID
        /// </summary>
        [JsonProperty("questionnaireId")]
        public string QuestionnaireId { get; set; }

        /// <summary>
        /// 关联的调查问卷名称
        /// </summary>
        [JsonProperty("questionnaireaName")]
        public string QuestionnaireName { get; set; }

        /// <summary>
        /// 创建者
        /// </summary>
        [JsonProperty("creator")]
        public string Creator { get; set; }

        /// <summary>
        /// 创建者姓名
        /// </summary>
        [JsonProperty("creatorName")]
        public string CreatorName { get; set; }

        /// <summary>
        /// 是否归档
        /// Y = 已归档 ， N = 未归档
        /// </summary>
        [JsonProperty("archive")]
        public string Archive { get; set; }

        /// <summary>
        /// H5访问链接
        /// </summary>
        [JsonProperty("h5Url")]
        public string H5Url { get; set; }

        /// <summary>
        /// PC访问链接
        /// </summary>
        [JsonProperty("pcUrl")]
        public string PcUrl { get; set; }

        /// <summary>
        /// 内容列表
        /// </summary>
        [JsonProperty("contentList")]
        public List<CourseDetailDto> ContentList { get; set; }
    }

    /// <summary>
    /// 内容项实体类
    /// </summary>
    public class CourseDetailDto
    {
        /// <summary>
        /// 培训项目内容ID
        /// </summary>
        [JsonProperty("id")]
        public string Id { get; set; }

        /// <summary>
        /// 培训项目内容名称
        /// </summary>
        [JsonProperty("name")]
        public string Name { get; set; }

        /// <summary>
        /// 培训项目内容类型
        /// course=课程 ，exam=考试 ，activity=活动，assess=评估 ，task=作业
        /// </summary>
        [JsonProperty("contentType")]
        public string ContentType { get; set; }

        /// <summary>
        /// 培训项目内容开始时间
        /// </summary>
        [JsonProperty("startTime")]
        public DateTime? StartTime { get; set; }

        /// <summary>
        /// 培训项目内容结束时间
        /// </summary>
        [JsonProperty("endTime")]
        public DateTime? EndTime { get; set; }
    }
}
